package com.example.demo.common;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.ServletContext;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class FileImport {

	// public Map<String, Object> importUnitValidateFile(String fileName,
	// ServletContext sc) throws Exception {
	// // 表头
	// String[] titles = { "序号", "姓名", "性别", "部门", "政治面貌", "级别", "办公室电话", "职务",
	// "手机号码", "办公室地址", "参与专项工作组次数" };
	// StringBuffer validate = new StringBuffer();
	// StringBuffer fail = new StringBuffer();
	// int num = 0;
	// int count = 0;
	// FileInputStream fileInputStream;
	// fileInputStream = new FileInputStream(fileName.toString());
	// Workbook book;
	// Sheet sheet;
	// try {
	// book = Workbook.getWorkbook(fileInputStream);
	// // 获得第一个工作表对象
	// sheet = book.getSheet(0);
	// // int i = titles.length;
	// int j = sheet.getColumns();
	// String columnsName[] = new String[j];
	// for (int k = 0; k < j; k++) {
	// Cell cell = sheet.getCell(k, 0);
	// String s = cell.getContents().toString();
	// if (CommonUtil.isEmpty(s)) {
	// break;
	// }
	// columnsName[k] = s;
	// }
	// if (columnsName.length != titles.length) {
	// validate.append("模板错误，请下载正确的模板，进行数据导入！");
	// Map<String, Object> map = new HashMap<String, Object>();
	// map.put("error", validate.toString());
	// return map;
	// }
	// for (int l = 0; l < columnsName.length; l++) {
	// if (!columnsName[l].equals(titles[l])) {
	// // validate.append(titles[l] + "列名称或顺序有误！");
	// validate.append("模板错误，请下载正确的模板，进行数据导入！");
	// // throw new BusinessException(validate.toString());
	// Map<String, Object> map = new HashMap<String, Object>();
	// map.put("error", validate.toString());
	// return map;
	// }
	// }
	// } catch (ArrayIndexOutOfBoundsException e) {
	// Map<String, Object> map = new HashMap<String, Object>();
	// map.put("error", "模板错误，请下载正确的模板，进行数据导入！");
	// return map;
	// } catch (NullPointerException e) {
	// Map<String, Object> map = new HashMap<String, Object>();
	// map.put("error", "模板错误，请下载正确的模板，进行数据导入！");
	// return map;
	// }
	// List<CadreManage> list = new ArrayList<CadreManage>();
	// int bzCount = 0;
	// int rownum = 1;
	// Date start = null;
	// for (int i1 = 1; i1 < sheet.getRows() - bzCount; i1++) {
	// int empty = 0;
	// StringBuffer error = new StringBuffer();
	// CadreManage vo = new CadreManage();
	// for (int j = 0; j < sheet.getColumns(); j++) {
	// Cell cell = sheet.getCell(j, i1);
	// // System.out.println(titles[j]+":"+cell.getContents());
	// if (j == 0) {
	// ++rownum;
	// } else if (j == 1) {
	// String name = cell.getContents().trim();
	// // 姓名不能超过25个字符，必填项不能为空
	// if (CommonUtil.isNotEmpty(name)) {
	// if (name.trim().length() > 25) {
	// error.append("第" + rownum + "行中的，姓名不能超过30个字符！");
	// } else {
	// vo.setName(name.trim());
	// }
	// } else {
	// error.append("第" + rownum + "行中的，姓名不能为空！");
	// empty++;
	// }
	// } else if (j == 2) {
	// // 性别
	// String sex = cell.getContents().trim();
	// if (CommonUtil.isEmpty(sex)) {
	// fail.append("性别不能为空!");
	// empty++;
	// } else {
	// if (sex.trim().length() > 1) {
	// error.append("第" + rownum + "性别不能超过1个字符!");
	// } else {
	// if (sex.equals("男")) {
	// vo.setSex("0");
	// }
	// if (sex.equals("女")) {
	// vo.setSex("1");
	// }
	// }
	// }
	// } else if (j == 3) {
	// // 部门
	// String dept = cell.getContents().trim();
	// if (CommonUtil.isEmpty(dept)) {
	// fail.append("部门不能为空！");
	// empty++;
	// } else {
	// if (dept.trim().length() > 10) {
	// error.append("第" + rownum + "行中的，部门长度不能超过10个字符！");
	// } else {
	// // 中文转成码值
	// if (CommonUtil.isNotEmpty(dept)) {
	// vo.setDept(dept);
	// } else {
	// error.append("第" + rownum + "行中的，部门不存在！");
	// }
	// }
	// }
	// } else if (j == 4) {
	// // 政治面貌
	// String politicsStatus = cell.getContents().trim();
	// if (CommonUtil.isEmpty(politicsStatus)) {
	// fail.append("政治面貌不能为空！");
	// empty++;
	// } else {
	// if (politicsStatus.trim().length() > 10) {
	// error.append("第" + rownum + "行中的，政治面貌长度不能超过10字符！");
	// } else {
	// // 中文转成码值
	// if (CommonUtil.isNotEmpty(politicsStatus)) {
	// vo.setPoliticsStatus(politicsStatus);
	// } else {
	// error.append("第" + rownum + "行中的，政治面貌不存在！");
	// }
	//
	// }
	// }
	// } else if (j == 5) {
	// // 级别
	// String rank = cell.getContents().trim();
	// if (CommonUtil.isEmpty(rank)) {
	// fail.append("级别不能为空！");
	// empty++;
	// } else {
	// if (rank.trim().length() > 20) {
	// error.append("第" + rownum + "行中的，级别不能超过10个字符！");
	// } else {
	// // 中文转成码值
	// if (CommonUtil.isNotEmpty(rank)) {
	// vo.setRank(rank);
	// } else {
	// error.append("第" + rownum + "行中的，级别不存在！");
	// }
	// }
	// }
	// } else if (j == 6) {
	// // 办公室电话
	// String phone = cell.getContents().trim();
	// if (CommonUtil.isEmpty(phone)) {
	// fail.append("办公室电话不能为空！");
	// empty++;
	// } else {
	// if (phone.trim().length() > 25) {
	// error.append("第" + rownum + "行中的，办公室电话不能超过25个字符！");
	// } else {
	// if (isPhone(phone)) {
	// vo.setOfficeTel(phone);
	// } else {
	// error.append("第" + rownum + "行中的，办公室电话格式错误！");
	// }
	// }
	// }
	// } else if (j == 7) {
	// // 职务
	// String position = cell.getContents().trim();
	// if (CommonUtil.isEmpty(position)) {
	// fail.append("职务不能为空！");
	// empty++;
	// } else {
	// if (position.trim().length() > 10) {
	// error.append("第" + rownum + "行中的，职务不能超过10个字符！");
	// } else {
	// // 中文转成码值
	// if (CommonUtil.isNotEmpty(position)) {
	// vo.setPosition(position);
	// } else {
	// error.append("第" + rownum + "行中的，职务不存在！");
	// }
	// }
	// }
	// } else if (j == 8) {
	// // 手机号码
	// String mobilePhone = cell.getContents().trim();
	// if (CommonUtil.isEmpty(mobilePhone)) {
	// fail.append("手机号码不能为空！");
	// empty++;
	// } else {
	// if (mobilePhone.trim().length() > 12) {
	// error.append("第" + rownum + "行中的，手机号码不能超过12个字符！");
	// } else {
	// // 判断是否是手机号码
	// if (isMobilePhone(mobilePhone)) {
	// vo.setMobilePhone(mobilePhone);
	// } else {
	// error.append("第" + rownum + "行中的，手机号码格式错误！");
	// }
	// }
	// }
	// } else if (j == 9) {
	// // 办公室地址
	// String officeAddress = cell.getContents().trim();
	// if (CommonUtil.isEmpty(officeAddress)) {
	// fail.append("办公室地址不能为空！");
	// empty++;
	// } else {
	// if (officeAddress.length() > 249) {
	// error.append("第" + rownum + "行中的，办公室地址不能超过249字符");
	// } else {
	// vo.setOfficeAddress(officeAddress);
	// }
	// }
	// } else if (j == 10) {
	// // 参与专项工作组次数
	// String joinworknum = cell.getContents();
	// if (CommonUtil.isEmpty(joinworknum)) {
	// fail.append("参与专项工作组次数不能为空！");
	// empty++;
	// } else {
	// if (joinworknum.trim().length() > 5) {
	// error.append("第" + rownum + "行中的，参与专项工作组次数不能超过5个字符！");
	// } else {
	// vo.setJoinWorkNum(joinworknum);
	// }
	// }
	// }
	// }
	// // 判断一行是否为空
	// if (empty != (titles.length - 1)) {
	// if (fail.length() != 0) {
	// num++;
	// vo.setRemark(fail.toString());
	// fail = new StringBuffer();
	// }
	// list.add(vo);
	// count++;
	// validate.append(error);
	// } else {
	// }
	// }
	// book.close();
	// fileInputStream.close();
	// // 如果错误信息不为空
	// if (validate.length() != 0) {
	// // 抛出错误信息
	// } else {
	// if (list.size() != 0) {
	// for (CadreManage cadremanage : list) {
	// // 暂存
	// cadremanage.setRemark("1");
	// cadremanage.setOpenAccount("1"); // 账户新增
	// cadremanage.setDataStatus("1");
	// doAdd(cadremanage);
	// }
	// } else {
	// validate.append("导入文件为空，请重新上传！");
	// }
	// }
	// Map<String, Object> map = new HashMap<String, Object>();
	// map.put("error", validate.toString());
	// map.put("row", list.size());
	// map.put("fail", num);
	// return map;
	// }

	/**
	 * 
	 * 方法描述: 手机号码校验
	 * 
	 * @param phone
	 * @return true
	 * @author lixh
	 */

	public static boolean isMobilePhone(String phone) {
		String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
		if (phone.length() != 11) {
			return false;
		} else {
			Pattern p = Pattern.compile(regex);
			Matcher m = p.matcher(phone);
			boolean isMatch = m.matches();
			if (!isMatch) {
			}
			return isMatch;
		}
	}

	/**
	 * 
	 * 方法描述: 电话号码验证
	 * 
	 * @param str
	 * @return
	 * @author lixh
	 */
	public static boolean isPhone(String str) {
		Pattern p1 = null, p2 = null;
		Matcher m = null;
		boolean b = false;
		p1 = Pattern.compile("^[0][1-9]{2,3}-[0-9]{5,10}$"); // 验证带区号的
		p2 = Pattern.compile("^[1-9]{1}[0-9]{5,8}$"); // 验证没有区号的
		if (str.length() > 9) {
			m = p1.matcher(str);
			b = m.matches();
		} else {
			m = p2.matcher(str);
			b = m.matches();
		}
		return b;
	}

}
